home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / FLAME184.ZIP / FLAME.ASM < prev    next >
Assembly Source File  |  1996-09-02  |  4KB  |  162 lines

  1.  
  2. ;                 ██████████████████████████████████████████
  3. ;                 █            -  f l a m e  -             █
  4. ;                 █   Entry into the 256 byte fire compo   █
  5. ;                 █    Copyright 1996 Gaffer/PRoMETHEUS    █
  6. ;                 █         email: gaffer@ar.com.au        █
  7. ;                 ██████████████████████████████████████████
  8.  
  9. .MODEL TINY
  10. .386
  11.  
  12. DATASEG 
  13. Seed   DW 141
  14.  
  15. UDATASEG
  16. Buffer DB 320*203 dup(?)
  17.  
  18. CODESEG
  19. ORG 100h
  20. LOCALS
  21.  
  22.  
  23.  
  24. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  25. ;░░   INITIALIZATION - Set mode & palette, setup vidmode, palette & stuff   ░░
  26. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  27.     .STARTUP
  28.  
  29. ;┌───────────────┐
  30. ;│ SETUP VGA SEG │
  31. ;└───────────────┘
  32.     push 0A000h
  33.     pop es
  34.  
  35. ;┌───────────────────┐
  36. ;│ INIT VGA MODE 13h │
  37. ;└───────────────────┘
  38.     mov al,13h
  39.     int 10h
  40.  
  41. ;┌──────────────────┐
  42. ;│ GENERATE PALETTE │
  43. ;└──────────────────┘
  44.     mov al,63                                       ; Fill palette with white
  45.     mov cx,768
  46.     mov di,64*3
  47.     rep stosb                  
  48.     
  49.     mov si,2+63*3
  50.     xor ax,ax
  51.     call PaletteGen                                 ; Green   ->    __/*
  52.     mov ah,1                                                          
  53.     call PaletteGen                                 
  54.     
  55.     mov si,1+63*3
  56.     call PaletteGen                                 ; Blue    ->    _/**
  57.     
  58.     xor si,si
  59.     call PaletteGen                                 ; Red     ->    /***
  60.     
  61.        
  62. ;┌─────────────┐
  63. ;│ SET PALETTE │
  64. ;└─────────────┘
  65.     mov ax,1012h
  66.     mov cl,255
  67.     xor dx,dx
  68.     int 10h
  69.  
  70.  
  71. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  72. ;░░        MAIN LOOP - Cycle through flame animation until keypressed       ░░    
  73. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  74. MainLoop:
  75.  
  76. ;┌─────────────────┐
  77. ;│ FLAME ANIMATION │
  78. ;└─────────────────┘
  79.     mov cx,320
  80.     mov di,OFFSET Buffer
  81.     xor ah,ah
  82.     mov bx,100
  83. @@L1:
  84.     mov al,ds:[di+639]                ; Average it out...
  85.     mov dl,ds:[di+640]
  86.     add ax,dx
  87.     mov dl,ds:[di+641]
  88.     add ax,dx
  89.     mov dl,ds:[di+1280]
  90.     add ax,dx
  91.     shr ax,2
  92.     jz @@ZERO                         ; Cool a bit...
  93.     dec al         
  94. @@ZERO:            
  95.     mov ds:[di],al
  96.     mov dl,[di+1280]
  97.     add ax,dx
  98.     shr ax,1
  99.     mov ds:[di+320],al                                ; double the height
  100.     inc di         
  101.     loop @@L1      
  102.     mov cx,320     
  103.     add di,cx      
  104.     dec bx         
  105.     jnz @@L1       
  106.                     
  107. ;┌────────────────────────┐
  108. ;│ OUTPUT FLAME TO SCREEN │
  109. ;└────────────────────────┘
  110.     xor di,di
  111.     mov si,OFFSET Buffer
  112.     mov cx,(320/4)*95*2
  113.     rep movsd                       
  114.  
  115. ;┌─────────────────────┐
  116. ;│ FLAME GENERATOR BAR │
  117. ;└─────────────────────┘
  118.     mov di,OFFSET Buffer + 320*199
  119.     mov cx,320-4
  120. @@L2:     
  121.     in  al,40h                        ; read from timer
  122.     add ax,Seed
  123.     add Seed,ax
  124.     mov ah,al
  125.     mov ds:[di],ax
  126.     mov ds:[di+2],ax
  127.     add di,4
  128.     dec cx
  129.     jnz @@L2
  130.  
  131. ;┌─────────────────┐
  132. ;│ CHECK FOR KBHIT │
  133. ;└─────────────────┘
  134.     in al,60h
  135.     das
  136.     jc mainloop                       ; thanks goes to icepick! *8)
  137.  
  138. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  139. ;░░             DOS EXIT CODE - Switch to textmode, return to DOS           ░░    
  140. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  141.     mov ax,0003h                                  ; textmode
  142.     int 10h
  143.     ret                               ; ret to dos
  144.  
  145.  
  146.  
  147.  
  148. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  149. ;░░   PALETTE GEN FUNCTION - simple 64 color step 3 palette gen thingo *8)  ░░    
  150. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  151. PaletteGen:     
  152.     mov cl,64
  153.     xor al,al
  154. @@L2:
  155.     mov es:[si],al
  156.     add al,ah
  157.     add si,3
  158.     loop @@L2
  159.     ret
  160.  
  161. END
  162.